<?php

/*
 * Formulaire d'identification
 */

class Application_Form_Installer extends Zend_Form
{
	private $base_url;
	
	/* Surcharge du constructeur */
	public function __construct($options = null, $base_url){		
		$this->base_url = $base_url;

		parent::__construct($options);
	}
	
	public function init()
	{
		/* Form Elements & Other Definitions Here ... */
		$this->setName('installer')
			 ->setAction($this->base_url.'/index') // ajouter Helper pour baseUrl plus helper de vue
			 ->setDisableLoadDefaultDecorators(true)
			 ->setAttrib('id','frm_installation')
			 ->setAttrib('class', 'form-horizontal');
		
		$options = array(
			'name' => 'mysql_host'
		);
		$mysql_host = new Zend_Form_Element_Text($options);
		$mysql_host->setLabel('Host')
				->setRequired(true)
				->setAttrib('class', 'input-large')
				->setAttrib('required', 'required');
		
		$mysql_host_popover = new odcf_myForm_Element_Popover('mysql_host_popover');
		$mysql_host_popover->setContent("Si vous utilisez un hébergeur l'adresse est fournit par votre hébergeur.<br/>Si vous effectuez une installation en local, utilisez 127.0.0.1")
					->setPlacement('right')
					->setHtml(true)
					->setTitle('Adresse IP ou url de votre base de données.');
		
		$options = array(
			'name' => 'mysql_dbname'
		);
		$mysql_dbname = new Zend_Form_Element_Text($options);
		$mysql_dbname->setLabel('Nom de la base de données ')
				->setRequired(true)
				->setAttrib('class', 'input-large')
				->setAttrib('required', 'required');
		
		$mysql_dbname_popover = new odcf_myForm_Element_Popover('mysql_dbname_popover');
		$mysql_dbname_popover->setContent("Si vous utilisez un hébergeur le nom de la base est fournit par votre hébergeur. <br/>Si vous effectuez une installation en local, vous devez tout d'abord créer la base de données.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle('Nom de votre base de données.');
		
		
		$options = array(
			'name' => 'mysql_login'
		);
		$mysql_login = new Zend_Form_Element_Text($options);
		$mysql_login->setLabel('Login ')
				->setRequired(true)
				->setAttrib('class', 'input-large')
				->setAttrib('required', 'required');		
		
		$mysql_login_popover = new odcf_myForm_Element_Popover('mysql_login_popover');
		$mysql_login_popover->setContent("Si vous utilisez un hébergeur le login est fournit par votre hébergeur. <br/> Si vous effectuez une installation en local, il est possible qu'il n'y ait pas de login.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle('Login de votre base de données.');
		
				
		$options = array(
			'name' => 'mysql_password'
		);
		$mysql_password = new Zend_Form_Element_Text($options);
		$mysql_password->setLabel('Password ')
				->setRequired(true)
				->setAttrib('class', 'input-large')
				->setAttrib('required', 'required');
				
		$mysql_password_popover = new odcf_myForm_Element_Popover('mysql_password_popover');
		$mysql_password_popover->setContent("Si vous utilisez un hébergeur le Mot de passe est fournit par votre hébergeur.<br/>Si vous effectuez une installation en local, il est possible qu'il n'y ait pas de mot de passe.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle('Login de votre base de données.');

		$options = array(
			'name' => 'mysql_prefixe'
		);
		$mysql_prefixe = new Zend_Form_Element_Text($options);
		$mysql_prefixe->setLabel('Préfixe des tables ')
					->setAttrib('class', 'input-large');
		
		$mysql_prefixe_popover = new odcf_myForm_Element_Popover('mysql_prefixe_popover');
		$mysql_prefixe_popover->setContent("Le préfixe permet d'éviter des conflits avec des tables de même nom déjà présente dans votre base. <br/>Chaque tables créées par Odcf sera préfixées par la valeur saisie. <br/>Le préfixe est facultatif.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle('Préfixe des tables');
		
		$options = array(
			'name' => 'ecrase_table'
		);
		$ecrase_table = new Zend_Form_Element_Checkbox($options);
		$ecrase_table->setLabel('Écraser les tables de même nom');
				
		$ecrase_table_popover = new odcf_myForm_Element_Popover('ecrase_table_popover');
		$ecrase_table_popover->setContent("Par défaut, Odcf quitte l'installation si des tables de même nom existent. <br/>Pour ignorer ce contrôle, cochez cette case.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle('Écraser les tables de même nom');		

		$options = array(
			'name' => 'login'
		);
		$login = new Zend_Form_Element_Text($options);
		$login->setLabel('Identifiant de connexion')
				->setRequired(true)
				->setAttrib('class', 'input-large')
				->setAttrib('required', 'required');
		
		$login_popover = new odcf_myForm_Element_Popover('login_popover');
		$login_popover->setContent("Si Odcf est accessible depuis internet, ne choississez pas un login trop simple.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle("Choix de l'indentifiant");		

					
		//$options = array(
		//	'name' => 'mdp'
		//);
		//$password = new Zend_Form_Element_Text($options);
		//$password->setLabel('Mot de passe de connexion')
		//		->setRequired(true)
		//		->setAttrib('class', 'input-large');
		//		
		$options = array(
			'name' => 'mdp'
		);
		$mdp = new Zend_Form_Element_Password($options);
		$mdp->setLabel('Mot de passe de connexion')
				->setRequired(true)
				->setAttrib('class', 'input-large')
				->setAttrib('required', 'required');
		
		$mdp_popover = new odcf_myForm_Element_Popover('mdp_popover');
		$mdp_popover->setContent("Si Odcf est accessible depuis internet, ne choississez pas un mot de passe trop simple.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle("Choix du mot de passe");				
				
		
		$config_ini = new Zend_Form_Element_Button('config_ini');
		$config_ini->setLabel('Vérifier')
					->setAttrib('class', 'btn btn-info')
					->setAttrib('onclick','verif_fichier();');
					
		$config_ini_popover = new odcf_myForm_Element_Popover('config_ini_popover');
		$config_ini_popover->setContent("Dans ce fichier sera écrit les options de configuration que vous venez de choisir.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle("Vérification config_ini");
		
		$php_log = new Zend_Form_Element_Button('php_log');
		$php_log->setLabel('Vérifier')
					->setAttrib('class', 'btn btn-info')
					->setAttrib('onclick','verif_fichier();');
					
		$php_log_popover = new odcf_myForm_Element_Popover('php_log_popover');
		$php_log_popover->setContent("Si ce fichier existe et qu'il est accessible en écriture des informations de débugage pourront y être écrite. <br/>Cela peut simplifier vos échanges avec les développeurs d'Odcf en cas de problème de fonctionnement de l'application.")
					->setPlacement('right')
					->setHtml(true)
					->setTrigger('hover')
					->setTitle("Vérification php_log");

		$options = array(
			'name' => 'submit',
			'id' => 'submit'
		);
		$submit = new Zend_Form_Element_Button($options);
		$submit->setLabel('Valider')
				->setAttrib('class', 'btn btn-primary');
				
		$this->addElements(array($mysql_host,$mysql_dbname,$mysql_login,$mysql_password,
								 $mysql_prefixe,$login,$mdp,$submit,$ecrase_table,
								 $mysql_host_popover, $mysql_dbname_popover, $mysql_login_popover,
								 $mysql_password_popover, $mysql_prefixe_popover,$ecrase_table_popover,
								 $login_popover, $mdp_popover, $config_ini, $config_ini_popover,
								 $php_log, $php_log_popover));

	}
	
	public function render(Zend_View_Interface $view=null){
		
		$liste_elements = $this->getElements();
		$html='';
		
		//$html.="<form id='" . $this->getAttrib('id') . "' action='".$this->getAction()."' method='".$this->getMethod()."'>";
		$html .= "<form id='" . $this->getAttrib('id') . "' action='" . $this->getAction() . "' method='" . $this->getMethod() . "' class='" . $this->getAttrib("class") . "'>";

		//$html.='';
		//$html.=$liste_elements['pdo_base']->getLabel(); 
		
		//$html.=$liste_elements['pdo_base']->getLabel();
		/*if($element->renderErrors()!=""){
			$html.="<tr class='errors'>
						<td colspan='2' style='color:red'>".$element->renderErrors()."</td>
					</tr>";
		}*/
								
		$html .= '<fieldset><legend>Configuration de MySQL</legend>';
		
        $html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="'.$liste_elements['mysql_host']->getName().'">';
        $html .= $liste_elements['mysql_host']->getLabel().'</label>';
        $html .= '<div class="controls">';
        $html .= '<span class="span4">'.$liste_elements['mysql_host']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['mysql_host_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="'.$liste_elements['mysql_dbname']->getName().'">';
        $html .= $liste_elements['mysql_dbname']->getLabel().'</label>';
        $html .= '<div class="controls">';
        $html .= '<span class="span4">'.$liste_elements['mysql_dbname']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['mysql_dbname_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="'.$liste_elements['mysql_login']->getName().'">';
        $html .= $liste_elements['mysql_login']->getLabel().'</label>';
        $html .= '<div class="controls">';
        $html .= '<span class="span4">'.$liste_elements['mysql_login']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['mysql_login_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="'.$liste_elements['mysql_password']->getName().'">';
        $html .= $liste_elements['mysql_password']->getLabel().'</label>';
        $html .= '<div class="controls">';
        $html .= '<span class="span4">'.$liste_elements['mysql_password']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['mysql_password_popover']->render().'</span>';
		
        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="'.$liste_elements['mysql_prefixe']->getName().'">';
        $html .= $liste_elements['mysql_prefixe']->getLabel().'</label>';
        $html .= '<div class="controls">';
        $html .= '<span class="span4">'.$liste_elements['mysql_prefixe']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['mysql_prefixe_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="'.$liste_elements['ecrase_table']->getName().'">';
        $html .= $liste_elements['ecrase_table']->getLabel().'</label>';
        $html .= '<div class="controls">';
        $html .= '<span class="span4">'.$liste_elements['ecrase_table']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['ecrase_table_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '</fieldset>';
		
		$html .= '<fieldset><legend>Création de votre compte de connexion</legend>';
		
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="'.$liste_elements['login']->getName().'">';
        $html .= $liste_elements['login']->getLabel().'</label>';
        $html .= '<div class="controls">';
        $html .= '<span class="span4">'.$liste_elements['login']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['login_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="'.$liste_elements['mdp']->getName().'">';
        $html .= $liste_elements['mdp']->getLabel().'</label>';
        $html .= '<div class="controls">';
        $html .= '<span class="span4">'.$liste_elements['mdp']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['mdp_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '</fieldset>';
		
		$html .= '<fieldset><legend>Accessibilité aux fichiers </legend>';
		$html .= '<div class="row-fluid"><p class="text-info">Les fichiers suivants doivent être disponibles en écriture. Veuillez cliquer sur les boutons "Vérifier".</p>';
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="verifFichier">';
        $html .= 'application/configs/opendcf.ini</label>';
        $html .= '<div class="controls">';
		$html .= '<span class="span1" id="config_ini"></span>';
        $html .= '<span class="span3 text-right">'.$liste_elements['config_ini']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['config_ini_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '<div class="row-fluid">';
		
		$html .= '<div class="control-group">';
        $html .= '<label class="control-label" for="verifFichier">';
        $html .= 'application/php.log</label>';
        $html .= '<div class="controls">';
		$html .= '<span class="span1" id="php_log"></span>';
        $html .= '<span class="span3 text-right">'.$liste_elements['php_log']->renderViewHelper().'</span>';
		$html .= '<span class="span4">'.$liste_elements['php_log_popover']->render().'</span>';

        $html.= '</div>';
        $html.= '</div>';
		
		$html .= '</div>';
		
		$html .= '</fieldset>';
		
		$html .= $liste_elements['submit']->renderViewHelper();

				
			
		$html.= '</form>';			

		$this->_setIsRendered();
		return $html;
	
	}
}
?>



